#ifndef __SysEventDispatcher__h__included__
#define __SysEventDispatcher__h__included__

#include "neiderra/core/Base.h"
#include "Events.h"

using namespace neiderra::core;

namespace neiderra { 
	namespace gui {
		namespace events {
// 			struct aEvent;
			struct GUIMouseEvent;
			struct GUIKeyEvent;
/*			struct aSceneEvent;
			struct aSysEvent;
			struct sysShutDownEvent;*/
		}
		using namespace events;
	
		//! Internal events dispatcher
		class EventDispatcher: public Base 
		{
			public:
				EventDispatcher(Core* core);
					
				virtual ~EventDispatcher();
			
				virtual void dispatchEvents();
			
// 				virtual void dispatch(aEvent*) {}
				virtual void dispatch(GUIMouseEvent*) ;
				virtual void dispatch(GUIKeyEvent*) ;
/*				virtual void dispatch(aSceneEvent*) {}
				virtual void dispatch(aSysEvent*) {}
				virtual void dispatch(sysShutDownEvent*) {}*/
				//virtual void dispatch(InternalEvent*);
	
		};
	}
}

#endif
